//
//  HMTabBar.swift
//  Weibo
//
//  Created by 黄亦寒 on 16/9/19.
//  Copyright © 2016年 HM. All rights reserved.
//

import UIKit
//1.协议
protocol HMTabBarDelegate:NSObjectProtocol {
    //2.代理方法
    func didSelectedComposeButton()
}

class HMTabBar: UITabBar {

    //点击十字按钮执行的闭包
    var composeButtonClosure:(()->())?
    //3.代理属性
    weak var hmDelegate:HMTabBarDelegate?
    
    lazy var composeButton:UIButton = {
        let button = UIButton()
        //设置图片
        button.setImage(UIImage(named:"tabbar_compose_icon_add"), for: .normal)
    button.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"), for: .highlighted)
        //添加点击事件
        button.addTarget(self, action: #selector(composeBtnClick), for: .touchUpInside)
        //设置背景图片
       button.setBackgroundImage(UIImage(named:"tabbar_compose_button"), for: .normal)
        button.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"), for: .highlighted)
        //设置大小
        button.sizeToFit()
        
        return button
        
    }()
    
    //十字按钮的点击事件
    //防止外界修改，告诉编译器我们是用oc机制调用这个方法
    @objc private func composeBtnClick() -> Void {
        //执行闭包
        composeButtonClosure?()
        //4.让代理执行代理方法
        hmDelegate?.didSelectedComposeButton()
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        //支持xib写法
        super.init(coder: aDecoder)
        setUpUI()
    }

    //添加控件的方法
    func setUpUI() -> Void {
        //防止push时屏幕出现黑边
        backgroundImage = UIImage(named:"tabbar_background")
        addSubview(composeButton)
    }
    
    //设置十字按钮的位置
    override func layoutSubviews(){
        super.layoutSubviews()
        //十字按钮的中心店
        composeButton.centerX = width/2
        composeButton.centerY = height/2
        //每项按钮的宽度
        let itemWidth = width/5
        //记录按钮的下标
        var index = 0
        
        //获取系统按钮的控件
        for value in subviews {
            if value.isKind(of: NSClassFromString("UITabBarButton")!) {
                value.width = itemWidth
                //设置按钮的x坐标
                value.x = CGFloat(index) * itemWidth
                index += 1
                //如果是第三个按钮就再加上十字按钮的宽度
                if index == 2 {
                    index += 1
                }
            }
        }
        
    }
}
